home *** CD-ROM | disk | FTP | other *** search
- /*
- File: CLinkedList.h
-
- Contains: xxx put contents here xxx
-
- Written by: Tim Harnett
-
- Copyright: © 1995 by Apple Computer, Inc., all rights reserved.
-
- Change History (most recent first):
-
- <2> 2/14/95 TMH tweak
- <1> 2/6/95 TMH new
- 2/6/95 TMH xxx put comment here xxx
-
- To Do:
- */
-
- #ifndef __CLinkedList__
- #define __CLinkedList__
-
-
- //----------------------------
- // C L i n k
- //----------------------------
-
-
- class CLink {
- friend class CLinkedList;
- friend class CLinkedListIterator;
- public:
- CLink() {fLink=0;};
- private:
- CLink* fLink;
- };
-
-
-
- //---------------------------
- // C L i n k e d L i s t
- //--------------------------
-
-
- class CLinkedList {
- friend class CLinkedListIterator;
- public:
- CLinkedList() {fHead=0; fTail=0; fNItems=0;};
-
- CLink* UnlinkHead();
- void LinkTail(CLink* item);
-
- CLink* Head() { return fHead; };
- CLink* Tail() { return fTail; };
- long Count() { return fNItems; };
-
- private:
- CLink* fHead;
- CLink* fTail;
- long fNItems;
-
- };
-
-
- //-----------------------------------------
- // C L i n k e d L i s t I t e r a t o r
- //------------------------------------------
-
-
- class CLinkedListIterator {
- public:
- CLinkedListIterator(CLinkedList* linkedList) { fLinkedList = linkedList; fCurrItem = 0; fPrevItem = 0; fNextItem = 0;};
-
- CLink* FirstItem() { fPrevItem = 0; fCurrItem = fLinkedList->Head(); if(fCurrItem!= 0) fNextItem = fCurrItem->fLink; return fCurrItem; }
- Boolean More() { return fCurrItem !=0; }
- CLink* NextItem() { fPrevItem = fCurrItem; fCurrItem = fNextItem; if( fCurrItem!=0) fNextItem = fCurrItem->fLink; return fCurrItem; };
-
- void UnlinkCurrentItem();
-
- CLinkedList* fLinkedList;
- CLink* fCurrItem;
- CLink* fPrevItem;
- CLink* fNextItem;
-
-
-
- };
-
-
- #endif __CLinkedList__
-
-